package main

import "math"

/**
 * @Author: DengLibin
 * @Date: Create in 2023-01-11 14:05:14
 * @Description:给你一个整数数组 nums 和一个整数 k ，判断数组中是否存在两个 不同的索引 i 和 j ，
 满足 nums[i] == nums[j] 且 abs(i - j) <= k 。如果存在，返回 true ；否则，返回 false 。
 示例 1：

输入：nums = [1,2,3,1], k = 3
输出：true
示例 2：

输入：nums = [1,0,1,1], k = 1
输出：true
示例 3：

输入：nums = [1,2,3,1,2,3], k = 2
输出：false
*/

/**
 * @Author: DengLibin
 * @Date: Create in 2023-01-11 14:05:16
 * @Description: 思路 使用map
 */
func containsNearbyDuplicate(nums []int, k int) bool {
	m := make(map[int]int, len(nums))

	for i, num := range nums {
		if index, has := m[num]; has && int(math.Abs(float64(i-index))) <= k {
			return true
		}
		m[num] = i
	}

	return false

}
